package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.table.AbstractTableModel;

import modelo.DetalleOrdenDAO;
import modelo.DetalleOrdenDAO.CantidadProd;
import Vista.NewJDialogProductoCantidad;
public class ControladorProductoCantidad{
	private NewJDialogProductoCantidad reportProdCant;
	private DetalleOrdenDAO.CantidadProd[] pmdesc;
	private AbstractTableModel modelo;
	
	public ControladorProductoCantidad(JFrame frm) {
		reportProdCant = new NewJDialogProductoCantidad(frm);

		reportProdCant.setVisible(true);
		DetalleOrdenDAO pdao = new DetalleOrdenDAO();
		pmdesc = pdao.ConsultarProductoCantidad().toArray(new CantidadProd[1]);
		
		reportProdCant.getjComboBoxProducCantidad().setModel(new DefaultComboBoxModel(new String[] { "Ascendente", "Descendente" }));
		
		reportProdCant.getjComboBoxProducCantidad().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				if (((String) reportProdCant.getjComboBoxProducCantidad().getSelectedItem()).equals("Ascendente")) {
					Arrays.sort(pmdesc, new Comparator<DetalleOrdenDAO.CantidadProd>() {
						@Override
						public int compare(CantidadProd o1, CantidadProd o2) {
							return o1.cantidad - o2.cantidad;
						}
					});
				} else {
					Arrays.sort(pmdesc, new Comparator<DetalleOrdenDAO.CantidadProd>() {
						@Override
						public int compare(CantidadProd o1, CantidadProd o2) {
							return o2.cantidad - o1.cantidad;
						}
					});
				}
				modelo.fireTableStructureChanged();
			}
		});
		
		modelo = new AbstractTableModel() {
			@Override
			public Object getValueAt(int fila, int columna) {
				DetalleOrdenDAO.CantidadProd p = pmdesc[fila];
				switch (columna) {
				case 0: return p.nombre;
				case 1: return p.cantidad;
				}
				return null;
			}
			
			@Override
			public int getRowCount() {
				return pmdesc.length;
			}
			
			@Override
			public int getColumnCount() {
				return 2;
			}
		
			@Override
			public String getColumnName(int columna) {
				switch (columna) {
				case 0: return "Nombre";
				case 1: return "Cantidad";
				}
				return null;
			}
		};
		reportProdCant.getjButtonSalir().addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				reportProdCant.dispose();
			}
		});
		
		reportProdCant.getjTableProductoCantidad().setModel(modelo);
	}
}